package Test.stream流测试;

import Test.Test02.Student;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;

/**
 * @Author kirito
 * @Date 2023/12/13 19:01
 * @PackageName:Test.stream流测试
 * @ClassName: a
 * @Description:
 * @Version 1.0
 */
public class StreamDemo2 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        Collections.addAll(list, "张三丰", "张无忌", "张三", "李四", "李明", "张强");

        // map加工方法
        // new Function<String, String>() 第一个参数原材料,第二个参数是加工后的结果。
        // 1. 需求1：给集合元素的前面都加上一个：黑马的：
        list.stream().map(new Function<String, String>() {
            @Override
            public String apply(String s) { // 形参类型是第一个参数，方法返回类型是第二个参数
                return "黑马的" + s;
            }
        });
        // Lambda 化简
        list.stream().map(s -> "黑马的" + s).forEach(System.out::println);


        // 2. 需求2：把所有的名称 都加工成一个学生对象。
        list.stream().map(new Function<String, Student>() {
            @Override
            public Student apply(String s) {
                return new Student(s);
            }
        });
        list.stream().map(s -> new Student(s)).forEach(System.out::println);
        // 构造器引用，方法引用
        list.stream().map(Student::new).forEach(System.out::println);
    }
}

